The present invention generally relates to OpenFlow networks, and more particularly, to connecting endpoints between different OpenFlow domains.
OpenFlow is an open standard that enables researchers to run experimental protocols in networks. OpenFlow is a feature often found in commercial Ethernet switches, routers and wireless access points, OpenFlow provides a standardized mechanism to allow researchers to run experiments, without requiring vendors to expose the internal workings of their network devices.
In a classical router or switch, the fast packet forwarding (data path) and the high level routing decisions (control path) occur on the same device. An OpenFlow Switch separates these two functions. The data path portion still resides on the switch, while high-level routing decisions are moved to a separate controller, typically a standard server. The OpenFlow Switch and Controller communicate via the OpenFlow protocol, which defines messages, such as packet-received, send-packet-out, modify-forwarding-table, and get-stats.
The data path of an OpenFlow Switch presents a clean flow table abstraction; each flow table entry contains a set of packet fields to match, and an action (such as send-out-port, modify-field, or drop). When an OpenFlow Switch receives a packet it has never seen before, for which it has no matching flow entries, it sends this packet to the controller. The controller then makes a decision on how to handle this packet. It can drop the packet, or it can add a flow entry directing the switch on how to forward similar packets in the future. For example, if the controller knows how to reach a destination device, the controller will send the packet to the switch connected to the destination device (which may be a different switch than the switch connected to an originating device from where the packet originated). Otherwise, the controller outputs a broadcast message to all of the switches in the domain. The broadcast message includes an address or other identifier of the destination device, and the destination device matching the identifier responds to the broadcast message via its connected switch. The response includes the switch ID, the port ID, and other information used to route the packet to the destination device, and the controller then transmits the packet to the destination device. The controller may update a flow table so that the next time a packet is sent to this particular destination device, the controller can send the packet to the destination device (via the device's switch) without the need to send out a broadcast message.
Currently, an OpenFlow controller can be used to design, deploy, and control a single network which is directly managed by that controller. There are increasing numbers of OpenFlow deployments which are located at different geographical locations. There is no known technique for establishing communication between hosts/networking elements part of one OpenFlow domain to communicate with hosts/networking elements of other OpenFlow domains.